/*
Date:20210818 11:26PM
key:关键要清理第一个头的指向
 */
class Solution {
public:
    ListNode* reverseList(ListNode* head) {
        if(head==nullptr){return head;}
        ListNode* p=head->next;
        //原链表头的指向情况，否则新链表尾巴无限循环导致堆栈溢出
        head->next=nullptr;
        while(p!=nullptr)
        {
            //保留后置节点
            ListNode*tmp=p->next;
            p->next=head;
            //当前成为head
            head=p;
            //后成为当前
            p=tmp;
        }
        return head;
    }
};